<?php
namespace app;

use app\Common\Srp6;
use app\World\Worldpacket;

class Testsrp
{
    // const CMSG_PING = '0x1DC';
    public function run()
    {
        $Srp6       = new Srp6();
        $sessionkey = 'A07BB958F170E0828FA97FCCA04B63B55469C1043ED3E5882D31147DB57EDC3F3230DF158A6DD2BC';
        $sessionkey = $Srp6->BigInteger($sessionkey, 16)->toBytes();

        // 角色进入游戏
        // $mapid         = 1;
        // $x = -618.0;
        // $y = -4251.0;
        // $z = 38.774200439453125;
        // $orientation = 0.0;
        // $data = pack('Iffff',$mapid,$x,$y,$z,$orientation);
        // $data = GetBytes($data);
        // $encodeheader = Worldpacket::encrypter(OpCode::SMSG_LOGIN_VERIFY_WORLD, $data, $sessionkey);
        // $packdata     = array_merge($encodeheader, $data);
        // var_dump($packdata);die;
        //

        // WORLD_LOG('[SMSG_WARDEN_DATA] Client : ', 'warning');
        // $data = [0xb8,0x71,0xbd,0x0a,0x01,0x9e,0xac,0xd6,0x49,0x52,0x44,0x53,0xb5,0x19,0x5d,0x8b,0xd2,0xd0,0x70,0xd9,0x9f,0x11,0xf0,0x83,0x68,0xca,0x7e,0x0a,0xe0,0x96,0x36,0x4d,0x5f,0xee,0x21,0x48,0x07];
        // $packdata = Worldpacket::encrypter(OpCode::SMSG_WARDEN_DATA, $data, $sessionkey);
        // $data     = $packdata     = array_merge($packdata, $data);
        // // var_dump(json_encode($packdata));
        // $packdata = $Srp6->BigInteger(ToStr($packdata), 256)->toHex();
        // var_dump($packdata);

        // WORLD_LOG('[SMSG_AUTH_RESPONSE] Client : ', 'warning');
        // //加密
        // $data     = [0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02];
        // $packdata = Worldpacket::encrypter(OpCode::SMSG_AUTH_RESPONSE, $data, $sessionkey);
        // $data     = $packdata     = array_merge($packdata, $data);
        // // var_dump(json_encode($packdata));
        // $packdata = $Srp6->BigInteger(ToStr($packdata), 256)->toHex();
        // var_dump($packdata);

        // //加密
        // $data = [0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
        // $encodeheader = Worldpacket::encrypter(OpCode::SMSG_ADDON_INFO, $data, $sessionkey);
        // $packdata     = array_merge($encodeheader, $data);
        // // var_dump(json_encode($packdata));
        // $packdata = $Srp6->BigInteger(ToStr($packdata), 256)->toHex();
        // var_dump($packdata);

        // WORLD_LOG('[SMSG_CLIENTCACHE_VERSION] Client : ', 'warning');
        // $data         = [0x57, 0x4a, 0x00, 0x00];
        // $encodeheader = Worldpacket::encrypter(OpCode::SMSG_CLIENTCACHE_VERSION, $data, $sessionkey);
        // $packdata     = array_merge($encodeheader, $data);
        // // var_dump(json_encode($packdata));
        // $packdata = $Srp6->BigInteger(ToStr($packdata), 256)->toHex();
        // var_dump($packdata);

        // WORLD_LOG('[SMSG_TUTORIAL_FLAGS] Client : ', 'warning');
        // $data         = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
        // $encodeheader = Worldpacket::encrypter(OpCode::SMSG_TUTORIAL_FLAGS, $data, $sessionkey);
        // $packdata     = array_merge($encodeheader, $data);
        // /// var_dump(json_encode($packdata));
        // $packdata = $Srp6->BigInteger(ToStr($packdata), 256)->toHex();
        // var_dump($packdata);
        // die;

        //解包
        $data = [0x00, 0x2a, 0xec, 0x01, 0x01, 0x00, 0x00, 0x00, 
0x0a, 0xd2, 0xf9, 0x4e, 0xef, 0x07, 0xd4, 0x6e, 
0x1d, 0xef, 0x1c, 0x36, 0x5a, 0xa2, 0x57, 0x1b, 
0x18, 0xa1, 0xa5, 0xf3, 0xfb, 0x43, 0xac, 0xdb, 
0x6f, 0x93, 0x79, 0x8f, 0x55, 0xef, 0x0b, 0xbc, 
0x59, 0x65, 0xad, 0xc8];
        $packdata = Worldpacket::decrypter($data);
        $packdata = json_encode($packdata);
        var_dump($packdata);

        $data = [0x6a, 0x9a, 0xb8, 0x90, 0xb8, 0x71, 0xbd, 0x0a, 0x01, 0x9e, 0xac, 0xd6, 0x49, 0x52, 0x44, 0x53, 0xb5, 0x19, 0x5d, 0x8b, 0xd2, 0xd0, 0x70, 0xd9, 0x9f, 0x11, 0xf0, 0x83, 0x68, 0xca, 0x7e, 0x0a, 0xe0, 0x96, 0x36, 0x4d, 0x5f, 0xee, 0x21, 0x48, 0x07];
        $packdata = Worldpacket::decrypter($data, $sessionkey);
        $packdata = json_encode($packdata);
        var_dump($packdata);


        $data     = [0x7c, 0x47, 0x0e, 0x81, 0x0c, 0xe8, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02];
        $packdata = Worldpacket::decrypter($data, $sessionkey);
        $packdata = json_encode($packdata);
        var_dump($packdata);

        $data     = [0x43, 
0x33, 0xd3, 0x0e, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
        $packdata = Worldpacket::decrypter($data, $sessionkey);
        $packdata = json_encode($packdata);
        var_dump($packdata);

        $data     = [0xd5, 0x98, 0x7d, 0x8d, 0x34, 0x00, 0x00, 0x00];
        $packdata = Worldpacket::decrypter($data, $sessionkey);
        $packdata = json_encode($packdata);
        var_dump($packdata);

        $data     = [0xeb, 
0xf8, 0x6a, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00];
        $packdata = Worldpacket::decrypter($data, $sessionkey);
        $packdata = json_encode($packdata);
        var_dump($packdata);
    }
}
